package com.moarea.app.service.inter;

import org.apache.commons.net.ftp.FTPClient;

import java.io.IOException;

/**
 * FTP处理接口（提供FTP登录、下载方法）
 * <p>
 * jizhong
 * <p>
 * 2017-09-20
 */
public interface IFTPService {


    /**
     * FTP登录
     * jizhong
     * <p>
     * 2017-09-20
     *
     * @param ip       IP地址（不包含端口）
     * @param port     端口
     * @param username 用户名
     * @param password 密码
     * @return 结果
     */
    FTPClient ftpLogin(String ip, String port, String username, String password);

    /**
     * 下载FTP文件
     * <p>
     * jizhong
     * <p>
     * 2017-09-20
     *
     * @param ftpClient FTP客户端对象
     * @param ftpPath   下载文件地址
     * @param localPath 本地保存地址
     * @param delOrNot  是否删除
     * @return 下载是否完成
     */
    String[] downloadFTPFiles(FTPClient ftpClient, String ftpPath, String localPath, boolean delOrNot) throws IOException;

    /**
     * 保存FTP文件到本地路径下
     * <p>
     * jizhong
     * <p>
     * 2017-09-20
     *
     * @param ftpClient FTPClient对象
     * @param fileName  文件名称
     * @param ftpPath   FTP文件路径
     * @param localPath 本地地址
     * @param delOrNot  读取后是否删除
     * @throws IOException
     */
    boolean saveFTPFile(FTPClient ftpClient, String fileName, String ftpPath, String localPath, boolean delOrNot) throws IOException;

    /**
     * 上传文件到FTP
     * <p>
     * jizhong
     * <p>
     * 2017-09-20
     *
     * @param ftpClient FTPClient客户端对象
     * @param filename  文件名
     * @param filePath  本地文件地址
     * @param ftpPath   FTP保存路径
     * @return 是否成功
     */
    boolean uploadFTPFile(FTPClient ftpClient, String filename, String filePath, String ftpPath, boolean closeFinal);


    /**
     * 设置目标FTP登录参数到临时数据中
     * <p>
     * <p>
     * jizhong
     * <p>
     * 2017-09-20
     *
     * @param ip       IP
     * @param port     端口
     * @param username 用户名
     * @param password 密码
     */
    void setTargetFTPLoginParam(String ip, String port, String username, String password);

    /**
     * 关闭FTP链接
     *
     * @param client FTP对象
     */
    boolean closeFtpConnection(FTPClient client);


}
